home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-ARM / SIGNAL.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  4KB  |  190 lines

  1. #ifndef _ASMARM_SIGNAL_H
  2. #define _ASMARM_SIGNAL_H
  3.  
  4. #include <linux/types.h>
  5.  
  6. /* Avoid too many header ordering problems.  */
  7. struct siginfo;
  8.  
  9. #ifdef __KERNEL__
  10. /* Most things should be clean enough to redefine this at will, if care
  11.    is taken to make libc match.  */
  12.  
  13. #define _NSIG        64
  14. #define _NSIG_BPW    32
  15. #define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
  16.  
  17. typedef unsigned long old_sigset_t;        /* at least 32 bits */
  18.  
  19. typedef struct {
  20.     unsigned long sig[_NSIG_WORDS];
  21. } sigset_t;
  22.  
  23. #else
  24. /* Here we must cater to libcs that poke about in kernel headers.  */
  25.  
  26. #define NSIG        32
  27. typedef unsigned long sigset_t;
  28.  
  29. #endif /* __KERNEL__ */
  30.  
  31. #define SIGHUP         1
  32. #define SIGINT         2
  33. #define SIGQUIT         3
  34. #define SIGILL         4
  35. #define SIGTRAP         5
  36. #define SIGABRT         6
  37. #define SIGIOT         6
  38. #define SIGBUS         7
  39. #define SIGFPE         8
  40. #define SIGKILL         9
  41. #define SIGUSR1        10
  42. #define SIGSEGV        11
  43. #define SIGUSR2        12
  44. #define SIGPIPE        13
  45. #define SIGALRM        14
  46. #define SIGTERM        15
  47. #define SIGSTKFLT    16
  48. #define SIGCHLD        17
  49. #define SIGCONT        18
  50. #define SIGSTOP        19
  51. #define SIGTSTP        20
  52. #define SIGTTIN        21
  53. #define SIGTTOU        22
  54. #define SIGURG        23
  55. #define SIGXCPU        24
  56. #define SIGXFSZ        25
  57. #define SIGVTALRM    26
  58. #define SIGPROF        27
  59. #define SIGWINCH    28
  60. #define SIGIO        29
  61. #define SIGPOLL        SIGIO
  62. /*
  63. #define SIGLOST        29
  64. */
  65. #define SIGPWR        30
  66. #define    SIGUNUSED    31
  67.  
  68. /* These should not be considered constants from userland.  */
  69. #define SIGRTMIN    32
  70. #define SIGRTMAX    (_NSIG-1)
  71.  
  72. #define SIGSWI        32
  73.  
  74. /*
  75.  * SA_FLAGS values:
  76.  *
  77.  * SA_ONSTACK is not currently supported, but will allow sigaltstack(2).
  78.  * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
  79.  * SA_RESTART flag to get restarting signals (which were the default long ago)
  80.  * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
  81.  * SA_RESETHAND clears the handler when the signal is delivered.
  82.  * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
  83.  * SA_NODEFER prevents the current signal from being masked in the handler.
  84.  *
  85.  * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
  86.  * Unix names RESETHAND and NODEFER respectively.
  87.  */
  88. #define SA_NOCLDSTOP    0x00000001
  89. #define SA_NOCLDWAIT    0x00000002 /* not supported yet */
  90. #define SA_SIGINFO    0x00000004
  91. #define SA_ONSTACK    0x08000000
  92. #define SA_RESTART    0x10000000
  93. #define SA_NODEFER    0x40000000
  94. #define SA_RESETHAND    0x80000000
  95.  
  96. #define SA_NOMASK    SA_NODEFER
  97. #define SA_ONESHOT    SA_RESETHAND
  98. #define SA_INTERRUPT    0x20000000 /* dummy -- ignored */
  99.  
  100. #define SA_RESTORER    0x04000000
  101. #define SA_THIRTYTWO    0x02000000 /* deliver signal in 32-bit mode even if
  102.                       task is running 26 bits. */
  103.  
  104. /* 
  105.  * sigaltstack controls
  106.  */
  107. #define SS_ONSTACK    1
  108. #define SS_DISABLE    2
  109.  
  110. #define MINSIGSTKSZ    2048
  111. #define SIGSTKSZ    8192
  112.  
  113. #ifdef __KERNEL__
  114.  
  115. /*
  116.  * These values of sa_flags are used only by the kernel as part of the
  117.  * irq handling routines.
  118.  *
  119.  * SA_INTERRUPT is also used by the irq handling routines.
  120.  * SA_SHIRQ is for shared interrupt support on PCI and EISA.
  121.  */
  122. #define SA_PROBE        0x80000000
  123. #define SA_SAMPLE_RANDOM    0x10000000
  124. #define SA_IRQNOMASK        0x08000000
  125. #define SA_SHIRQ        0x04000000
  126. #endif
  127.  
  128. #define SIG_BLOCK          0    /* for blocking signals */
  129. #define SIG_UNBLOCK        1    /* for unblocking signals */
  130. #define SIG_SETMASK        2    /* for setting the signal mask */
  131.  
  132. /* Type of a signal handler.  */
  133. typedef void (*__sighandler_t)(int);
  134.  
  135. #define SIG_DFL    ((__sighandler_t)0)    /* default signal handling */
  136. #define SIG_IGN    ((__sighandler_t)1)    /* ignore signal */
  137. #define SIG_ERR    ((__sighandler_t)-1)    /* error return from signal */
  138.  
  139. #ifdef __KERNEL__
  140. struct old_sigaction {
  141.     __sighandler_t sa_handler;
  142.     old_sigset_t sa_mask;
  143.     unsigned long sa_flags;
  144.     void (*sa_restorer)(void);
  145. };
  146.  
  147. struct sigaction {
  148.     __sighandler_t sa_handler;
  149.     unsigned long sa_flags;
  150.     void (*sa_restorer)(void);
  151.     sigset_t sa_mask;        /* mask last for extensibility */
  152. };
  153.  
  154. struct k_sigaction {
  155.     struct sigaction sa;
  156. };
  157.  
  158. #else
  159. /* Here we must cater to libcs that poke about in kernel headers.  */
  160.  
  161. struct sigaction {
  162.     union {
  163.       __sighandler_t _sa_handler;
  164.       void (*_sa_sigaction)(int, struct siginfo *, void *);
  165.     } _u;
  166.     sigset_t sa_mask;
  167.     unsigned long sa_flags;
  168.     void (*sa_restorer)(void);
  169. };
  170.  
  171. #define sa_handler    _u._sa_handler
  172. #define sa_sigaction    _u._sa_sigaction
  173.  
  174. #endif /* __KERNEL__ */
  175.  
  176. typedef struct sigaltstack {
  177.     void *ss_sp;
  178.     int ss_flags;
  179.     size_t ss_size;
  180. } stack_t;
  181.  
  182. #ifdef __KERNEL__
  183. #include <asm/sigcontext.h>
  184.  
  185. #define sigmask(sig)    (1UL << ((sig) - 1))
  186.  
  187. #endif
  188.  
  189. #endif
  190.